CentOS7 安装Nginx

1、nginx依赖于pcre库,要先安装pcre

1
yum install pcre pcre-devel

2、下载nginx

1
wget http://nginx.org/download/nginx-1.10.2.tar.gz

3、 解压安装包

1
tar  -zxvf nginx-1.10.2.tar.gz         //解压安装包

4、编译安装

1
2
3
4
5
6
7
8
9
./configure --prefix=/usr/local/nginx     // 指定安装路径到/usr/local的nginx目录下

--user=nginx \ // 指定用户

--group=nginx \ // 指定组

--with-http_ssl_module // 开启SSL加密功能

make && make install

5、启动

1
./nginx

问题:不能绑定80端口, 80端口已经被占用

  • 产生原因:有时是自己装了apache,nginx等,还有更多情况是操作系统自带了apache并作为服务启动,或者是阿里云的有个云盾,占用的也是这个端口

  • 如何解决: 把占用80端口的软件或服务关闭即可,如下代码:

1
2
3
4
5
netstat -ant   //查看端口当前状态

netstat -autp //查看80端口占用的进程,我这里是21907

kill -9 21907 //杀死占用80端口的进程21907(pkill -9 http //杀死所有交http的程序)

问题: nginx: [emerg] getpwnam(“nginx”) failed

  • 产生原因:系统不存在nginx用户

  • 如何解决: 创建nginx用户,如下代码:

1
useradd -s /sbin/nologin -M nginx

6、开机自启动

如果是直接yum安装, 则下面命令就足够了

1
systemctl enable nginx.service

如果是编译安装,如下

1
vi /lib/systemd/system/nginx.service

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

[Install]

WantedBy=multi-user.target

解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Unit]:服务的说明

Description:描述服务

After:描述服务类别

[Service]服务运行参数的设置

Type=forking是后台运行的形式

ExecStart为服务的具体运行命令

ExecReload为重启命令

ExecStop为停止命令

PrivateTmp=True表示给服务分配独立的临时空间

注意:[Service]的启动、重启、停止命令全部要求使用绝对路径

[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

保存退出。

1
systemctl enable nginx.service

7.其他命令

启动nginx服务

1
systemctl start nginx.service

设置开机自启动

1
systemctl enable nginx.service

停止开机自启动

1
systemctl disable nginx.service

查看服务当前状态

1
systemctl status nginx.service

重新启动服务

1
systemctl restart nginx.service

查看所有已启动的服务

1
systemctl list-units --type=service
关注作者公众号,获取更多资源!
赏作者一杯咖啡~